﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using QuanLyHocPhi.BLL;
using QuanLyHocPhi.Model;

namespace QuanLyHocPhi.GUI.DuLieu
{
    public partial class FormSinhVienKhongChuyen_Details : QuanLyHocPhi.GUI.FormBaseDialog
    {
        private SinhVien m_SinhVien;
        private bool m_IsAddingNew;
        private bool m_IsChuyen = false;
        public FormSinhVienKhongChuyen_Details(SinhVien sinhVien, bool isAddingNew,bool chuyen=false)
        {
            InitializeComponent();

            m_SinhVien = sinhVien;
            m_SinhVien.Lop = BizLopGoc.GetLopByMaLop(m_SinhVien.KC_MaLop);
            m_IsAddingNew = isAddingNew;
            DisplayData();
            if (isAddingNew)
            {
                txtMaSinhVien.ReadOnly = false;
                this.ActiveControl = txtMaSinhVien;
            }
            else
            {
                txtMaSinhVien.ReadOnly = true;
                this.ActiveControl = txtHoDem;
            }
            m_IsChuyen = chuyen;
        }

        private void DisplayData()
        {
            txtMaSinhVien.Text = m_SinhVien.MaSinhVien;
            txtHoDem.Text = m_SinhVien.HoDem;
            txtTen.Text = m_SinhVien.Ten;
            txtNgaySinh.Text = m_SinhVien.NgaySinh;
            txtHeSoMienGiam.Text = Convert.ToString(m_SinhVien.HeSoMienGiam);
            txtTenLopGoc.Text = m_SinhVien.Lop.TenLop;
        }

        private void OnOKClick(object sender, EventArgs e)
        {
            #region Thu thập dữ liệu
            string maSinhVien = txtMaSinhVien.Text.Trim();
            if (maSinhVien.IsNullOrEmpty())
            {
                DialogUtils.ShowError("Không được để trống mã sinh viên!");
                txtMaSinhVien.Focus();
                return;
            }

            string hoDem = txtHoDem.Text.Trim();
            string ten = txtTen.Text.Trim();
            if (hoDem + ten == "")
            {
                DialogUtils.ShowError("Không được để trống họ và tên!");
                txtHoDem.Focus();
                return;
            }

            string ngaySinh = txtNgaySinh.Text.Trim();

            string stHeSoMienGiam = txtHeSoMienGiam.Text.Trim();
            double heSoMienGiam = 0;
            try
            {
                heSoMienGiam = Convert.ToDouble(stHeSoMienGiam);
            }
            catch
            {
                DialogUtils.ShowError("Thông tin hệ số miễn giảm không hợp lệ!");
                txtHeSoMienGiam.Focus();
                return;
            }

            string maLopGoc = m_SinhVien.Lop.MaLop;
            #endregion

            SinhVien sv = new SinhVien
            {
                MaSinhVien = maSinhVien,
                HoDem = hoDem,
                Ten = ten,
                NgaySinh = ngaySinh,
                HeSoMienGiam = heSoMienGiam,
                KC_MaLop = maLopGoc,
                MaLoai = m_IsChuyen?(short)SinhVien.MaLoai_Chuyen:(short) SinhVien.MaLoai_KhongChuyen
            };
            try
            {
                if (m_IsAddingNew)
                    BizSinhVien.AddNew_SinhVienKhongChuyen(sv);
                else
                    BizSinhVien.Edit_SinhVienKhongChuyen(sv);
                m_SinhVien.HoDem = hoDem;
                m_SinhVien.Ten = ten;
                m_SinhVien.NgaySinh = ngaySinh;
                m_SinhVien.HeSoMienGiam = heSoMienGiam;
                m_SinhVien.KC_MaLop = maLopGoc;
                this.DialogResult = System.Windows.Forms.DialogResult.OK;
                this.Close();
            }
            catch (Exception exc)
            {
                DialogUtils.ShowError(exc.Message);
            }
        }

        private void OnChonLopGocLinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            GUI.DuLieu.SelectLopSinhHoatDialog frm = null;
            if (m_IsChuyen)
                frm = new SelectLopSinhHoatDialog(m_SinhVien.Lop,chuyen:true);
            else
                frm = new SelectLopSinhHoatDialog(m_SinhVien.Lop);
            if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            { 
                Lop lop = frm.SelectedLop;
                if (lop == null)
                    return;
                m_SinhVien.KC_MaLop = lop.MaLop;
                m_SinhVien.Lop = lop;
                txtTenLopGoc.Text = lop.TenLop;
            }
        }
    }
}
